<?php
数据类型以及使用


一：string（字符串）

设置：
    SET key value    # 设置指定 key 的值
    SETEX key seconds value     # 设置过期时间的key  seconds (以秒为单位)。
    PSETEX key milliseconds value    # 设置过期时间的key  milliseconds (以 毫秒 为单位)。
    MSET key value [key value ...]          # 设置一个或多个 key-value 对。
    MSETNX key value [key value ...]        # 设置一个或多个不存在的key 并赋值


获取值：
    GET key             #获取指定 key 的值。
    MGET key1 [key2..]  #  获取所有(一个或多个) key 值。
    GETRANGE key start end   # 截取字符串的子字符  
        ~]# set a abcdefghijklmn
        ~]# getrange a 3 5   第三个截取到第五个
    GETSET key value        # 重新赋值，并返回旧值
    SETNX key value         # 设置不存在的key 并赋值


统计：
    STRLEN key          #  值的长度


偏移：
    GETBIT key offset
        对 key 所储存的字符串值，获取指定偏移量上的位(bit)。
    SETBIT key offset value
        对 key 所储存的字符串值，设置或清除指定偏移量上的位(bit)。
    SETRANGE key offset value
        用 value 参数覆写给定 key 所储存的字符串值，从偏移量 offset 开始。


值的计算：
    INCR key       # 数字值增一
    DECR key            # 数字值减一

    INCRBY key increment        # 整数相加
    DECRBY key decrement        # 整数相减

    INCRBYFLOAT key increment       # 加浮点值


最加值：
    APPEND key value # key 为字符串，则值追加到末尾












二：hash（哈希）

设置：
     HSET key field value       # 设置 field 的值
     HMSET key field1 value1 [field2 value2 ]       # 设置多个field-value (域-值)

     HSETNX key field value     #    设置不存在 field 的值


获取：
    HGET key field              #   获取指定字段的值
    HMGET key field1 [field2]       # 获取所有给定的值

    HGETALL key                 #   获取所有key的字段
    HKEYS key       # 获取所有的字段
    HVALS key       # 获取所有值

    HLEN key        # 获取字段的数量


值的计算：
    HINCRBY key field increment       # 整数值相加
    HINCRBYFLOAT key field increment     # 浮点值相加


删除：
    HDEL key field1 [field2]     # 删除一个或多个哈希表字段


判断值是否存在：
    HEXISTS key field               # 指定的字段是否存在


其他：
    HSCAN key cursor [MATCH pattern] [COUNT count]          # 迭代哈希表中的键值对。







三：list（列表）
左：
    LPUSH key value1 [value2]         # 左边（头部）插入 一个或多个
    LPUSHX key value         # 左边（尾部）插入 ，必须存在key 
    LPOP key    # 删除左边（头部）一个元素
    BLPOP key1 [key2 ] timeout  # 移出并获取列表的第一个元素，如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。


右：
    RPUSH key value1 [value2]           # 右边（尾部）插入
    RPUSHX key value    # 右边（尾部）插入 ， 必须存在key
    RPOP key    # 删除最后一个元素
    BRPOP key1 [key2 ] timeout # 移出并获取列表的最后一个元素， 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。


匹配元素插入值：
    LINSERT key BEFORE|AFTER pivot value     # 元素前或者后插入元素
    ~]#  LINSERT key BEFORE|AFTER 匹配元素值 插入元素值


查找统计与展示：
    LLEN key    # 获取长度（总数）
    LRANGE key start stop                   # 获取元素
        ~]# LRANGE key 5 10      # 获取范围元素
        ~]# LRANGE key 0 -1      # 展示所有元素
    LINDEX key index            # 获取某个元素值
    LSET key index value        # 通过索引设置值


元素移除：
    LREM key count value            # 移除列表元素
        ~]# lrem data 2  'aaa'
    LTRIM key start stop                # 保留区域内的值
        ~]# lrem data 2 10   
    RPOPLPUSH source destination    #移除列表的最后一个元素，并将该元素添加到另一个列表并返回
    BRPOPLPUSH source destination timeout # 从列表中弹出一个值，将弹出的元素插入到另外一个列表中并返回它； 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。














四：set（集合）

设置：
    SADD key member1 [member2]     # 添加一个或多个成员


获取：
    SCARD key       # 获取成员数
8   SMEMBERS key 
返回集合中的所有成员
11  SRANDMEMBER key [count] 
返回集合中一个或多个随机数

计算：
    SDIFF key1 [key2]           # 返回给定所有集合的差集
    SDIFFSTORE destination key1 [key2]        返回给定所有集合的差集并存储在 destination 中


删除：
10  SPOP key 
移除并返回集合中的一个随机元素
12  SREM key member1 [member2] 
移除集合中一个或多个成员


交集与并集：
    5   SINTER key1 [key2] 
    返回给定所有集合的交集
    6   SINTERSTORE destination key1 [key2] 
    返回给定所有集合的交集并存储在 destination 中
13  SUNION key1 [key2] 
返回所有给定集合的并集
14  SUNIONSTORE destination key1 [key2] 
所有给定集合的并集存储在 destination 集合中


判断：
7   SISMEMBER key member 
判断 member 元素是否是集合 key 的成员


移动：
9   SMOVE source destination member 
将 member 元素从 source 集合移动到 destination 集合




其他：
    SSCAN key cursor [MATCH pattern] [COUNT count]          #  迭代集合中的元素





五：zset(sorted set：有序集合)
设置：
1   ZADD key score1 member1 [score2 member2] 
向有序集合添加一个或多个成员，或者更新已存在成员的分数


获取：
2   ZCARD key 
获取有序集合的成员数
7   ZRANGE key start stop [WITHSCORES] 
通过索引区间返回有序集合成指定区间内的成员
8   ZRANGEBYLEX key min max [LIMIT offset count] 
通过字典区间返回有序集合的成员
9   ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] 
通过分数返回有序集合指定区间内的成员
10  ZRANK key member 
返回有序集合中指定成员的索引
15  ZREVRANGE key start stop [WITHSCORES] 
返回有序集中指定区间内的成员，通过索引，分数从高到底
16  ZREVRANGEBYSCORE key max min [WITHSCORES] 
返回有序集中指定分数区间内的成员，分数从高到低排序
17  ZREVRANK key member 
返回有序集合中指定成员的排名，有序集成员按分数值递减(从大到小)排序
18  ZSCORE key member 
返回有序集中，成员的分数值


计算：
3   ZCOUNT key min max 
计算在有序集合中指定区间分数的成员数
4   ZINCRBY key increment member 
有序集合中对指定成员的分数加上增量 increment
5   ZINTERSTORE destination numkeys key [key ...] 
计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
6   ZLEXCOUNT key min max 
在有序集合中计算指定字典区间内成员数量
19  ZUNIONSTORE destination numkeys key [key ...] 
计算给定的一个或多个有序集的并集，并存储在新的 key 中


删除：
11  ZREM key member [member ...] 
移除有序集合中的一个或多个成员
12  ZREMRANGEBYLEX key min max 
移除有序集合中给定的字典区间的所有成员
13  ZREMRANGEBYRANK key start stop 
移除有序集合中给定的排名区间的所有成员
14  ZREMRANGEBYSCORE key min max 
移除有序集合中给定的分数区间的所有成员


交集与并集：






其他：
20  ZSCAN key cursor [MATCH pattern] [COUNT count] 
迭代有序集合中的元素（包括元素成员和元素分值）







六：Redis 发布订阅
1   PSUBSCRIBE pattern [pattern ...] 订阅一个或多个符合给定模式的频道。
2   PUBSUB subcommand [argument [argument ...]] 查看订阅与发布系统状态。
3   PUBLISH channel message 将信息发送到指定的频道。
4   PUNSUBSCRIBE [pattern [pattern ...]] 退订所有给定模式的频道。
5   SUBSCRIBE channel [channel ...] 订阅给定的一个或多个频道的信息。
6   UNSUBSCRIBE [channel [channel ...]] 指退订给定的频道。


Redis 事务命令
下表列出了 redis 事务的相关命令：

序号  命令及描述
1   DISCARD 取消事务，放弃执行事务块内的所有命令。
2   EXEC 执行所有事务块内的命令。
3   MULTI 标记一个事务块的开始。
4   UNWATCH 取消 WATCH 命令对所有 key 的监视。
5   WATCH key [key ...] 监视一个(或多个) key ，如果在事务执行之前这个(或这些) key 被其他命令所改动，那么事务将被打断。


Redis 脚本命令
下表列出了 redis 脚本常用命令：

序号  命令及描述
1   EVAL script numkeys key [key ...] arg [arg ...] 执行 Lua 脚本。
2   EVALSHA sha1 numkeys key [key ...] arg [arg ...] 执行 Lua 脚本。
3   SCRIPT EXISTS script [script ...] 查看指定的脚本是否已经被保存在缓存当中。
4   SCRIPT FLUSH 从脚本缓存中移除所有脚本。
5   SCRIPT KILL 杀死当前正在运行的 Lua 脚本。
6   SCRIPT LOAD script 将脚本 script 添加到脚本缓存中，但并不立即执行这个脚本。


Redis 连接命令
下表列出了 redis 连接的基本命令：

序号  命令及描述
1   AUTH password 验证密码是否正确
2   ECHO message 打印字符串
3   PING 查看服务是否运行
4   QUIT 关闭当前连接
5   SELECT index 切换到指定的数据库




Redis 服务器命令
下表列出了 redis 服务器的相关命令:

序号  命令及描述
1   BGREWRITEAOF 异步执行一个 AOF（AppendOnly File） 文件重写操作
2   BGSAVE 在后台异步保存当前数据库的数据到磁盘
3   CLIENT KILL [ip:port] [ID client-id] 关闭客户端连接
4   CLIENT LIST 获取连接到服务器的客户端连接列表
5   CLIENT GETNAME 获取连接的名称
6   CLIENT PAUSE timeout 在指定时间内终止运行来自客户端的命令
7   CLIENT SETNAME connection-name 设置当前连接的名称
8   CLUSTER SLOTS 获取集群节点的映射数组
9   COMMAND 获取 Redis 命令详情数组
10  COMMAND COUNT 获取 Redis 命令总数
11  COMMAND GETKEYS 获取给定命令的所有键
12  TIME 返回当前服务器时间
13  COMMAND INFO command-name [command-name ...] 获取指定 Redis 命令描述的数组
14  CONFIG GET parameter 获取指定配置参数的值
15  CONFIG REWRITE 对启动 Redis 服务器时所指定的 redis.conf 配置文件进行改写
16  CONFIG SET parameter value 修改 redis 配置参数，无需重启
17  CONFIG RESETSTAT 重置 INFO 命令中的某些统计数据
18  DBSIZE 返回当前数据库的 key 的数量
19  DEBUG OBJECT key 获取 key 的调试信息
20  DEBUG SEGFAULT 让 Redis 服务崩溃
21  FLUSHALL 删除所有数据库的所有key
22  FLUSHDB 删除当前数据库的所有key
23  INFO [section] 获取 Redis 服务器的各种信息和统计数值
24  LASTSAVE 返回最近一次 Redis 成功将数据保存到磁盘上的时间，以 UNIX 时间戳格式表示
25  MONITOR 实时打印出 Redis 服务器接收到的命令，调试用
26  ROLE 返回主从实例所属的角色
27  SAVE 异步保存数据到硬盘
28  SHUTDOWN [NOSAVE] [SAVE] 异步保存数据到硬盘，并关闭服务器
29  SLAVEOF host port 将当前服务器转变为指定服务器的从属服务器(slave server)
30  SLOWLOG subcommand [argument] 管理 redis 的慢日志
31  SYNC 用于复制功能(replication)的内部命令



